package com.meeting.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.meeting.entity.Customer;
import com.baomidou.mybatisplus.extension.service.IService;
import com.meeting.model.dto.bookingorder.BookingRequirementRequest;
import com.meeting.model.dto.customer.CustomerModifyRequest;
import com.meeting.model.dto.customer.CustomerQueryRequest;
import com.meeting.model.dto.customer.CustomerRegisterRequest;
import com.meeting.model.vo.MeetingRoomRecommendVO;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

/**
* @author 25843
* @description 针对表【customer(客户表)】的数据库操作Service
* @createDate 2025-04-19 12:54:48
*/
public interface CustomerService extends IService<Customer> {

    /**
     * 客户注册
     * @param registerRequest 注册请求
     * @return 是否注册成功
     */
    Boolean register(CustomerRegisterRequest registerRequest);

    /**
     * 客户登录
     * @param username 用户名
     * @param password 密码
     * @return token
     */
    String login(@NotBlank(message = "请输入用户名") @Size(max = 20, message = "用户名长度最大为20个字符") String username, 
                 @NotBlank(message = "请输入密码") String password);
    
    /**
     * 获取会议室详情
     * @param meetingRoomId 会议室ID
     * @return 会议室详情
     */
    MeetingRoomRecommendVO getMeetingRoomDetail(Long meetingRoomId);

    Wrapper<Customer> getQueryWrapper(CustomerQueryRequest queryRequest);

    /**
     * 修改客户账号状态
     * @param customerModifyRequest
     * @return
     */
    Boolean modifyCustomerStatus(@Valid CustomerModifyRequest customerModifyRequest);
}
